package com.ruoyi.framework.mybatisplus;

import cn.hutool.core.annotation.AnnotationUtil;

import java.lang.reflect.Field;

import static com.ruoyi.framework.mybatisplus.CamelUnderUtil.camel2under;


/**
 * 查询字段工具类
 * 统一处理查询字段相关的操作，包括字段名转换、别名处理等
 * 
 * @author xuzhen97
 */
public class QueryFieldUtil {
    
    private QueryFieldUtil() {
        // 私有构造函数，防止实例化
    }

    /**
     * 获取字段名
     * 优先使用@QueryAlias注解中定义的别名
     * 如果没有注解，则使用原始字段名转换为下划线格式
     * 
     * @param field 字段对象
     * @param originalName 原始字段名
     * @return 处理后的字段名
     */
    public static String getFieldName(Field field, String originalName) {
        if (AnnotationUtil.hasAnnotation(field, QueryAlias.class)) {
            QueryAlias queryAlias = field.getAnnotation(QueryAlias.class);
            String value = queryAlias.value();
            String prefix = queryAlias.prefix();
            
            if (!value.isEmpty()) {
                return prefix.isEmpty() ? value : prefix + "." + value;
            }
        }
        return camel2under(originalName);
    }


} 